package MyFront.Config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * 这里是 Swagger 的配置类
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    //这里设置一个 boolean 类型，可以在配置文件中手动开启或关闭 Swagger
    @Value("${spring.swagger2.enabled}")
    private boolean enabled;

    /**
     * 这里的 Docket 是 Swagger 中的全局配置对象，也就是上下文
     */
    @Bean
    public Docket docket(){
        Docket docket = new Docket(DocumentationType.SWAGGER_2);

        ApiInfo apiInfo= new ApiInfoBuilder().contact(
                        //这里是文档发布者的相关信息
                        new Contact("蒋智康Swagger开发文档","https://www.aliyun.com","1079098794@qq.com")
                )
                .title("API学习帮助文档") //标题
                .description("这是一个用于开发RestAPI帮助文档的框架")
                .version("1.1")
                .build();

        //这里给 docket 上下文配置 api 的描述信息
        docket.apiInfo(apiInfo);

        docket
                .enable(enabled)
                .select() //获取 Docket 中的选择器
                .apis(RequestHandlerSelectors.basePackage("MyFront.Controller")) //设定扫描哪一个包中的注解
                .build();

        return docket;

    }
}
